home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Texteditors / Origami / bindings / fun / trans-char < prev    next >
Encoding:
Text File  |  1996-09-27  |  2.3 KB  |  84 lines

  1. @if-using not(ocl-file-trans-char)
  2.    @use (ocl-file-trans-char)
  3.    ;OCL{{{}}}
  4.    ;OCL{{{  libs
  5.    @if-using not(ocl-file-delchar) @lib delchar @fi
  6.    ;OCL}}}
  7.    ( defvar ( tcc tc-over ) )
  8.    ;OCL{{{  transpose-characters
  9.    ;OCL{{{  trans-char, without screen-off
  10.    ( defmac tcc-do
  11.       ( if test-view
  12.          ( "  )
  13.         else
  14.          ;OCL{{{  do it
  15.          ( if in-prompt ( return-from-macro ) fi
  16.            ;OCL{{{  save changed status
  17.            set tcc counter test-file-changed
  18.            ;OCL}}}
  19.            if >(-(store-pos 1) 0)
  20.             ;OCL{{{  try to do it
  21.             (
  22.               ;OCL{{{  save overwrite mode and insert mode
  23.               set tc-over counter test-overwrite
  24.               delete-mode-overwrite
  25.               ;OCL}}}
  26.               if last-message M_ERR_PO () fi
  27.               backward-character
  28.               "$
  29.               if last-message M_ERR_PO
  30.                ;OCL{{{  error
  31.                ( forward-character )
  32.                ;OCL}}}
  33.               else
  34.                ;OCL{{{  can write left from cursor
  35.                ( forward-character
  36.                  forward-character
  37.                  "$
  38.                  backward-character
  39.                  undo-delete-character
  40.                  backward-character
  41.                  delete-previous-character
  42.                  backward-character
  43.                  undo-delete-character
  44.                  backward-character
  45.                  delete-previous-character
  46.                  forward-character
  47.                  forward-character
  48.                  forward-character
  49.                  delete-character
  50.                  delete-previous-character
  51.                  if >(tc-over 0) ( add-mode-overwrite ) fi
  52.                  return-from-macro
  53.                )
  54.                ;OCL}}}
  55.               fi
  56.               if >(tc-over 0) ( add-mode-overwrite ) fi
  57.             )
  58.             ;OCL}}}
  59.            fi
  60.            if >(tcc 0) ( set-file-unchanged ) fi
  61.            message ( "[ M_ERR_PO "] )
  62.          )
  63.          ;OCL}}}
  64.         fi
  65.       )
  66.    )
  67.    ;OCL}}}
  68.  
  69.    ( deffun transpose-characters
  70.       ( @if-using not( NO-SCR-OFF )
  71.            screen-off
  72.         @fi
  73.         tcc-do
  74.         @if-using not( NO-SCR-OFF )
  75.            screen-on
  76.            refresh-line
  77.            if last-message M_ERR_PO ( message ( "[ M_ERR_PO "] ) ) fi
  78.         @fi
  79.       )
  80.    )
  81.    ;OCL}}}
  82.    ( undeclare ( tcc tcc-do ) )
  83. @fi
  84.